<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //es6中新增的用于声明变量的关键字 let
        //let声明的变量只在所处于的块级有效 {}
        //在一个大括号中，使用let关键字声明的变量才具有块级作用域var关键字是不具备这个特点的
        //let能够防止循环变量变成全局变量
        //使用let声明的变量没有变量提升，只能先声明在使用
        let a = 10;
        console.log(a);
        // if(true){
        //     let b = 20;
        //     console.log(b);
        //     if(true){
        //         let c = 30;
        //         console.log(c);
        //     }
        //     console.log(c);
        // }
        // console.log(b);
        if(true){
            var abc = 40;
            let num = 50;
        }
        console.log(abc);
        // console.log(num);

          //let能够防止循环变量变成全局变量
        //   for(let i =0;i<2;i++){

        //   }
        //   console.log(i);

        /*使用let关键字声明的变量具有暂时性死区特点,所以在下面代码中let声明的变量已经于与
        块级作用域绑定，所以在声明之前使用变量就会报错，
        下面的代码就说明了使用let关键字声明的变量具有暂时性死区特点*/
        var num = 10;
        if(true){
            console.log(num);
            let num = 20;
        }
    </script>
</body>
</html>